//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
// Modified for NaturalVision by Razed
//
// Buffer Definitions: 
//
// cbuffer rage_matrices
// {
//
//   row_major float4x4 gWorld;         // Offset:    0 Size:    64 [unused]
//   row_major float4x4 gWorldView;     // Offset:   64 Size:    64
//   row_major float4x4 gWorldViewProj; // Offset:  128 Size:    64
//   row_major float4x4 gViewInverse;   // Offset:  192 Size:    64
//
// }
//
// cbuffer misc_globals
// {
//
//   float4 globalFade;                 // Offset:    0 Size:    16 [unused]
//   float globalHeightScale;           // Offset:   16 Size:     4 [unused]
//   float globalShaderQuality;         // Offset:   20 Size:     4 [unused]
//   float globalReuseMe00001;          // Offset:   24 Size:     4 [unused]
//   float globalReuseMe00002;          // Offset:   28 Size:     4 [unused]
//   float4 POMFlags;                   // Offset:   32 Size:    16 [unused]
//   float4 g_Rage_Tessellation_CameraPosition;// Offset:   48 Size:    16 [unused]
//   float4 g_Rage_Tessellation_CameraZAxis;// Offset:   64 Size:    16 [unused]
//   float4 g_Rage_Tessellation_ScreenSpaceErrorParams;// Offset:   80 Size:    16 [unused]
//   float4 g_Rage_Tessellation_LinearScale;// Offset:   96 Size:    16 [unused]
//   float4 g_Rage_Tessellation_Frustum[4];// Offset:  112 Size:    64 [unused]
//   float4 g_Rage_Tessellation_Epsilons;// Offset:  176 Size:    16 [unused]
//   float4 globalScalars;              // Offset:  192 Size:    16 [unused]
//   float4 globalScalars2;             // Offset:  208 Size:    16 [unused]
//   float4 globalScalars3;             // Offset:  224 Size:    16 [unused]
//   float4 globalScreenSize;           // Offset:  240 Size:    16
//   uint4 gTargetAAParams;             // Offset:  256 Size:    16 [unused]
//   float4 colorize;                   // Offset:  272 Size:    16 [unused]
//   float4 gGlobalParticleShadowBias;  // Offset:  288 Size:    16 [unused]
//   float gGlobalParticleDofAlphaScale;// Offset:  304 Size:     4 [unused]
//   float gGlobalFogIntensity;         // Offset:  308 Size:     4 [unused]
//   float4 gPlayerLFootPos;            // Offset:  320 Size:    16 [unused]
//   float4 gPlayerRFootPos;            // Offset:  336 Size:    16 [unused]
//
// }
//
// cbuffer lighting_globals
// {
//
//   float4 gDirectionalLight;          // Offset:    0 Size:    16 [unused]
//   float4 gDirectionalColour;         // Offset:   16 Size:    16 [unused]
//   int gNumForwardLights;             // Offset:   32 Size:     4 [unused]
//   float4 gLightPositionAndInvDistSqr[8];// Offset:   48 Size:   128 [unused]
//   float4 gLightDirectionAndFalloffExponent[8];// Offset:  176 Size:   128 [unused]
//   float4 gLightColourAndCapsuleExtent[8];// Offset:  304 Size:   128 [unused]
//   float gLightConeScale[8];          // Offset:  432 Size:   116 [unused]
//   float gLightConeOffset[8];         // Offset:  560 Size:   116 [unused]
//   float4 gLightNaturalAmbient0;      // Offset:  688 Size:    16 [unused]
//   float4 gLightNaturalAmbient1;      // Offset:  704 Size:    16 [unused]
//   float4 gLightArtificialIntAmbient0;// Offset:  720 Size:    16 [unused]
//   float4 gLightArtificialIntAmbient1;// Offset:  736 Size:    16 [unused]
//   float4 gLightArtificialExtAmbient0;// Offset:  752 Size:    16 [unused]
//   float4 gLightArtificialExtAmbient1;// Offset:  768 Size:    16 [unused]
//   float4 gDirectionalAmbientColour;  // Offset:  784 Size:    16 [unused]
//   float4 globalFogParams[5];         // Offset:  800 Size:    80
//   float4 globalFogColor;             // Offset:  880 Size:    16 [unused]
//   float4 globalFogColorE;            // Offset:  896 Size:    16 [unused]
//   float4 globalFogColorN;            // Offset:  912 Size:    16 [unused]
//   float4 globalFogColorMoon;         // Offset:  928 Size:    16 [unused]
//   float4 gReflectionTweaks;          // Offset:  944 Size:    16 [unused]
//
// }
//
// cbuffer im_cbuffer
// {
//
//   float4 TexelSize;                  // Offset:    0 Size:    16 [unused]
//   float4 refMipBlurParams;           // Offset:   16 Size:    16
//   float4 GeneralParams0;             // Offset:   32 Size:    16
//   float4 GeneralParams1;             // Offset:   48 Size:    16 [unused]
//   float g_fBilateralCoefficient;     // Offset:   64 Size:     4 [unused]
//   float g_fBilateralEdgeThreshold;   // Offset:   68 Size:     4 [unused]
//   float DistantCarAlpha;             // Offset:   72 Size:     4 [unused]
//   float4 tonemapColorFilterParams0;  // Offset:   80 Size:    16 [unused]
//   float4 tonemapColorFilterParams1;  // Offset:   96 Size:    16 [unused]
//   float4 RenderTexMSAAParam;         // Offset:  112 Size:    16 [unused]
//   float4 RenderPointMapINTParam;     // Offset:  128 Size:    16 [unused]
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// CoronasDepthMapSampler            sampler      NA          NA    0        1
// CoronasDepthMapSampler            texture  float4          2d    0        1
// rage_matrices                     cbuffer      NA          NA    1        1
// misc_globals                      cbuffer      NA          NA    2        1
// lighting_globals                  cbuffer      NA          NA    3        1
// im_cbuffer                        cbuffer      NA          NA    5        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION                 0   xyz         0     NONE   float   xyz 
// COLOR                    0   xyzw        1     NONE   float   xyzw
// TEXCOORD                 0   xy          2     NONE   float   xy  
// NORMAL                   0   xyz         3     NONE   float   xyz 
// SV_InstanceID            0   x           4   INSTID    uint       
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float   xyzw
// TEXCOORD                 0   xy          1     NONE   float   xy  
// TEXCOORD                 1   xyz         2     NONE   float   xyz 
//
vs_4_0
dcl_immediateConstantBuffer { { 0.772968, -0.222156, 0.528241, -0.802848},
                              { 0.262963, -0.075235, 0.823705, -0.556188},
                              { 0.569683, 0.121086, 0.398884, -0.411417},
                              { 0.440016, 0.487990, -0.034640, 0.176342},
                              { -0.120323, -0.586049, 0.200466, -0.687419},
                              { -0.258614, -0.163080, -0.688321, -0.635556},
                              { -0.345086, -0.848096, -0.362813, 0.614420},
                              { 0.061750, 0.506920, 0.977316, 0.208662},
                              { 0.789433, 0.490265, -0.702313, -0.071461},
                              { -0.495341, 0.233821, 0.179311, 0.962585},
                              { -0.930975, -0.327397, -0.912985, 0.241697},
                              { -0.217266, 0.972708, -0.697119, 0.529669} }
dcl_constantbuffer cb1[16], immediateIndexed
dcl_constantbuffer cb2[16], immediateIndexed
dcl_constantbuffer cb3[53], immediateIndexed
dcl_constantbuffer cb5[3], immediateIndexed
dcl_sampler s0, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_input v0.xyz
dcl_input v1.xyzw
dcl_input v2.xy
dcl_input v3.xyz
dcl_output_siv o0.xyzw, position
dcl_output o1.xy
dcl_output o2.xyz
dcl_temps 4
add r0.xyz, v0.xyzx, -v3.xyzx
dp3 r0.x, r0.xyzx, r0.xyzx
sqrt r0.x, r0.x
mul r0.x, r0.x, l(7.071068e-001)
add r0.yzw, v3.xxyz, -cb1[15].xxyz
dp3 r1.x, r0.yzwy, r0.yzwy
sqrt r1.x, r1.x
lt r1.x, r1.x, r0.x
dp3 r0.y, cb1[6].xyzx, r0.yzwy
lt r0.z, -r0.x, r0.y
div r0.x, r0.y, r0.x
add r0.x, -r0.x, l(1.000000e+000)
mul_sat r0.x, r0.x, l(5.000000e-001)
movc r0.x, r0.z, r0.x, l(1.000000)
movc r0.x, r1.x, r0.x, l(1.000000)
mul r0.yzw, v3.yyyy, cb1[9].xxyw
mad r0.yzw, v3.xxxx, cb1[8].xxyw, r0.yyzw
mad r0.yzw, v3.zzzz, cb1[10].xxyw, r0.yyzw
add r0.yzw, r0.yyzw, cb1[11].xxyw
div r1.x, l(1.000000e+000, 1.000000e+000, 1.000000e+000, 1.000000e+000), r0.w
mul r0.yz, r0.yyzy, r1.xxxx
mad r1.yz, r0.yyzy, l(0.000000e+000, 5.000000e-001, -5.000000e-001, 0.000000e+000), l(0.000000e+000, 5.000000e-001, 5.000000e-001, 0.000000e+000)
sample_l r2.xyzw, r1.yzyy, t0.xyzw, s0, l(0.000000e+000)
ge r1.y, r2.x, r0.w
if_nz r1.y
  mul r1.yz, v0.yyyy, cb1[9].xxyx
  mad r1.yz, v0.xxxx, cb1[8].xxyx, r1.yyzy
  mad r1.yz, v0.zzzz, cb1[10].xxyx, r1.yyzy
  add r1.yz, r1.yyzy, cb1[11].xxyx
  mad r1.xy, r1.yzyy, r1.xxxx, -r0.yzyy
  dp2 r1.x, r1.xyxx, r1.xyxx
  sqrt r1.x, r1.x
  mul r1.x, r1.x, cb5[2].x
  dp2 r1.y, cb5[2].yyyy, cb2[15].zzzz
  min r1.x, r1.y, r1.x
  mov r1.yz, l(0,0,0,0)
  loop 
    ige r1.w, r1.z, l(12)
    breakc_nz r1.w
    mad r2.xyzw, icb[r1.z + 0].xyzw, r1.xxxx, r0.yzyz
    mad r2.xyzw, r2.xyzw, l(5.000000e-001, -5.000000e-001, 5.000000e-001, -5.000000e-001), l(5.000000e-001, 5.000000e-001, 5.000000e-001, 5.000000e-001)
    sample_l r3.xyzw, r2.xyxx, t0.xyzw, s0, l(0.000000e+000)
    ge r1.w, r3.x, r0.w
    and r1.w, r1.w, l(0x3f800000)
    add r1.w, r1.w, r1.y
    sample_l r2.xyzw, r2.zwzz, t0.xyzw, s0, l(0.000000e+000)
    ge r2.x, r2.x, r0.w
    and r2.x, r2.x, l(0x3f800000)
    add r1.y, r1.w, r2.x
    iadd r1.z, r1.z, l(1)
  endloop 
else 
  mov r1.y, l(0)
endif 
mul r0.w, r1.y, l(4.166667e-002)
add r1.x, -cb5[1].x, l(1.000100e+000)
div r1.x, l(1.000000e+000, 1.000000e+000, 1.000000e+000, 1.000000e+000), r1.x
add_sat r0.yz, |r0.yyzy|, -cb5[1].xxxx
max r0.y, r0.z, r0.y
mul_sat r0.y, r1.x, r0.y
add r0.y, -r0.y, l(1.000000e+000)
mul r0.yw, r0.yyyw, r0.yyyw
mul r0.y, r0.y, r0.w
lt r0.z, l(0.000000e+000), r0.y
movc r1.xyz, r0.zzzz, v0.xyzx, v3.xyzx
mul r2.xyzw, r1.yyyy, cb1[9].xyzw
mad r2.xyzw, r1.xxxx, cb1[8].xyzw, r2.xyzw
mad r1.xyzw, r1.zzzz, cb1[10].xyzw, r2.xyzw
add o0.xyzw, r1.xyzw, cb1[11].xyzw
mul r0.yzw, r0.yyyy, v1.xxyz
mul r0.xyz, r0.xxxx, r0.yzwy
mul r0.xyz, r0.xyzx, v2.yyyy
add r1.xyz, v0.xyzx, -cb1[15].xyzx
dp3 r0.w, r1.xyzx, r1.xyzx
sqrt r0.w, r0.w
add r1.x, r0.w, -cb3[50].x
max r1.x, r1.x, l(0.000000e+000)
div r0.w, r1.x, r0.w
mul r0.w, r0.w, r1.z
mul r1.y, r0.w, cb3[52].z
lt r0.w, l(1.000000e-002), |r0.w|
mul r1.z, r1.y, l(-1.442695e+000)
exp r1.z, r1.z
add r1.z, -r1.z, l(1.000000e+000)
div r1.y, r1.z, r1.y
movc r0.w, r0.w, r1.y, l(1.000000)
mul r1.y, r1.x, cb3[51].w
mul r0.w, r0.w, r1.y
min r0.w, r0.w, l(1.000000e+000)
mul r0.w, r0.w, l(1.442695e+000)
exp r0.w, r0.w
min r0.w, r0.w, l(1.000000e+000)
add r0.w, -r0.w, l(1.000000e+000)
mul r1.y, r0.w, cb3[52].y
mad r0.w, -r0.w, cb3[52].y, l(1.000000e+000)
mul r0.w, r0.w, cb3[51].y
add r1.x, r1.x, -cb3[52].x
max r1.x, r1.x, l(0.000000e+000)
mul r1.x, r1.x, cb3[51].x
mul r1.x, r1.x, l(1.442695e+000)
exp r1.x, r1.x
add r1.x, -r1.x, l(1.000000e+000)
mad_sat r0.w, r0.w, r1.x, r1.y
add r0.w, -r0.w, l(1.000000e+000)
mul o2.xyz, r0.wwww, r0.xyzx
mov o1.x, v2.x
mov o1.y, v1.w
ret 
// Approximately 108 instruction slots used
